'use strict';

const Service = require('egg').Service;

class ApiService extends Service {
  /**
   * 添加api
   * @param {number} project_id 项目ID 不能为空
   * @param {string}} request_url 请求url 不能为空
   * @param {string} request_methods 请求方法 不能为空
   * @param {string} request_params 请求参数  可以为空
   * @param {string} request_desc api描述 不能为空
   * @param {string} response_json 返回结果示例 可以为空
   * @param {string} remark 备注 可以为空
   * @param {string} api_author api发布人 不可为空
   */
  async createApi(project_id, request_url, request_methods, request_params, request_desc, response_json, remark, api_author) {
    const { mysql } = this.app
    const createApi = await mysql.insert('api_list', {
      project_id,
      request_url,
      request_methods,
      request_params,
      request_desc,
      response_json,
      remark,
      api_author
    })
    return createApi
  }

  /**
   * 获取所有api
   */
  async showAllApi() {
    const { mysql } = this.app
    const result = await mysql.select('api_list')
    return result
  }

  /**
   * 根据projectId查询api
   * @param {number} id 
   */
  async findApiByProjectId(id) {
    const { mysql } = this.app
    const result = mysql.select('api_list', {
      where: {
        project_id: id
      }
    })
    return result
  }

  /**
   * 根据id查询api
   * @param {number} id 
   */
  async findApiById(id) {
    const { mysql } = this.app
    const result = mysql.get('api_list', {
      id
    })
    return result
  }

  /**
   * 我发布的api
   * @param {string} username 用户名
   */
  async myPublishApi(api_author) {
    const { mysql } = this.app
    const result = await mysql.select('api_list', {
      where: {
        api_author
      }
    })
    return result
  }
}

module.exports = ApiService;
